Modern systems are typically made up of a number of separate devices. Separate devices throughout a system typically communicate via electronic signals sent between the devices. In order to transfer data between the separate devices at a high speed, a system clock is typically used to keep signals sent between the devices readable by each receiving device. Each device in the system typically receives a clock signal and uses the clock signal to synchronize the data being sent from the device.
While each device should have access to the clock signal, there are times when data sent from a device may be out-of-sync from the internal clock. Methods of detecting and rejecting such asynchronous data must be used to avoid miscommunication between devices due to such an error.
Most existing approaches to detect and reject the asynchronous data in real-time systems are based on deterministic methods. To detect the asynchronous data, the time difference of a signal at a current time step and at a previous time step is usually calculated. The time difference is then compared with the signal's sampling time using a predefined threshold. If the time difference is within the predefined threshold of the signal's sampling time, the received data is considered as synchronous with the system clock. If, on the other hand, the time difference is not within the predefined threshold of the signal's sampling time, the received data is assumed to be asynchronous with the system clock.
However, because asynchronous data occurs due to a large number of various reasons, e.g. transport delay, accumulation of a series of data due to traffic congestion, etc., the overall behavior is probabilistic. For this reason, deterministic methods are not sufficient to provide accurate detection of asynchronous data in a real-time system.